#pragma once

#include "Device.h"
#include "NeroGame\NDynamicCamera.h"
namespace Graphics
{
	class Buffer;
}

namespace Graphics
{
class Camera : public Game::NDynamicCamera
{
	RTTI_DECLARATIONS(Camera, Game::NDynamicCamera)
public:
	Camera(void);
	virtual ~Camera(void);
	virtual void Initialize();
	virtual void Update(float gameTime);
	void ApplyTransform(const D3DXMATRIX& transform);
	void Rotate(NVector2 amount);
	void Move(NVector3 directon);
	Buffer* GetBuffer();

	D3DXMATRIX CalcualteReflectionMatrix(float distanceFromSurface);
private:
	void UpdateLookAt();
	void UpdateViewMatrix();

private:
	Buffer* mCameraBuffer;
};
}